package co.angluzha.commons.base.result;

/**
 * co.angluzha.commons.base.result文档说明
 *
 * @author Angluzha
 * @version 2022/11/21
 */
public class Rt {
    /**
     * 默认成功
     * @return
     */
    public static R success(){
        return new R()
                .setCode(Codes.SUCCESS.getCode())
                .setMsg(Codes.SUCCESS.getMsg());
    }

    /**
     * 返回数据成功
     * @param data
     * @return
     * @param <T>
     */
    public static <T> R<T> success(T data){
        return new R()
                .setCode(Codes.SUCCESS.getCode())
                .setMsg(Codes.SUCCESS.getMsg())
                .setData(data);
    }

    /**
     * 默认失败
     * @return
     */
    public static R error(){
        return new R()
                .setCode(Codes.FAIL.getCode())
                .setMsg(Codes.FAIL.getMsg());
    }

    /**
     * 返回数据失败
     * @param data
     * @return
     * @param <T>
     */
    public static <T> R<T> error(T data){
        return new R<T>()
                .setCode(Codes.FAIL.getCode())
                .setMsg(Codes.FAIL.getMsg())
                .setData(data);
    }

    /**
     * 自定义失败，不返回数据
     * @param codes
     * @return
     * @param <T>
     */
    public static <T> R<T> error(Codes codes){
        return new R<T>()
                .setCode(codes.getCode())
                .setMsg(codes.getMsg());
    }

    /**
     * 自定义失败，带返回数据
     * @param codes
     * @param data
     * @return
     * @param <T>
     */
    public static <T> R<T> error(Codes codes,T data){
        return new R<T>()
                .setCode(codes.getCode())
                .setMsg(codes.getMsg())
                .setData(data);
    }
}
